Python调用openpyxl设置/取消Excel行列的分级组合 您所在的位置:网站首页 excel 行 分组 Python调用openpyxl设置/取消Excel行列的分级组合

Python调用openpyxl设置/取消Excel行列的分级组合

2023-07-28 07:22| 来源: 网络整理| 查看: 265

最近在给公司做个小项目,需要自动化操作Excel,将原表sheet页的分组全部删除,然后按某种规则进行重新分组,如下图: 在这里插入图片描述 这个在Excel里一般很好设置,菜单栏的“数据”里找到组合,选中你想设置的单元格就能进行分组了 在这里插入图片描述 至于如何利用Python进行分组,我百度半天也没搜到决绝方案,打开官方文档也没有进行详细说明,无奈之下决定翻源码碰碰运气,想着openpyxl里有个rows_dimension可以控制行高和已有分组折叠(rows_dimension.hidden只能折叠或展开已有分组,无法新建或取消分组),进一步猜测下面会不会有一些未待网友发掘的属性能实现目的,翻两下还真给翻着了。 在这里插入图片描述 和常用的hidden height并列的还有一个outline_level属性,默认值是None,抱着试一试的心态引用了如下代码,成功!此时原表分组全部清除,其中 i 是你指定的Excel行号,从1开始。

worksheet.row_dimensions[i].outline_level=None

再往下翻,发现row_dimensions下还有个groups方法(其实是继承了一下,具体略过),光看源码看不出来在干什么(菜),于是上网搜索row_dimensions.group,万幸真的有人发过贴。键入以下代码, 成功设置新的分组:

worksheet.row_dimensions.group(1, 10, outline_level=1,hidden=False)

其中,前两个参数分别为想要分组的起始行和结束行,outline_level是你想设置的分组级别,越靠外数字越小,hidden是设置完分组后是否折叠。

至此问题解决。另外有几个坑也提醒一下:

起始行和结束行是指完全折叠进去的行,比如你设置了8-12行折叠,他会把第8行一起隐藏掉,如果你想让第8行作为隐藏后的第一行,就要把起始行设为9 在这里插入图片描述outline_level只能从内往外设置,最大到7(再高会有问题),也就是说要先设置好里面outline_level=7的最低层,再设置更高一级的第6层,以此类推column_dimensions也能设置column_dimensions.outline_level属性,但我反复尝试多次后均出现报错,大家可自行尝试。

参考文献: https://blog.csdn.net/weixin_45903952/article/details/104564613 https://stackoverflow.com/questions/64862098/how-to-create-many-row-dimensions-group-with-openpyxl



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有